ã¹ã¯ããŒã«ã«é£åããåçã¢ãã¡ãŒã·ã§ã³ãå®çŸããç»æçãªCSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ãæ¢æ±ãå®è£ æ¹æ³ãå©ç¹ãå®éã®äœ¿çšäŸã解説ããŸãã
CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ïŒã¹ã¯ããŒã«é§åãšãã§ã¯ãã§ãŠã§ãã¢ãã¡ãŒã·ã§ã³ã«é©åœã
ãŠã§ãã¯çµ¶ããé²åããŠãããããã«äŒŽããŠãŒã¶ãŒã®æåŸ ãé«ãŸã£ãŠããŸããéçãªãŠã§ãããŒãžã¯éå»ã®éºç©ã§ããã仿¥ã®ãŠãŒã¶ãŒã¯ã€ã³ã¿ã©ã¯ãã£ãã§é åçãªäœéšãæ±ããŠããŸãããŠã§ãã¢ãã¡ãŒã·ã§ã³ã«ãããæããšããµã€ãã£ã³ã°ãªçºå±ã®äžã€ãCSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã§ããããã¯ããŠãŒã¶ãŒã®ã¹ã¯ããŒã«é²è¡ç¶æ³ã«çŽæ¥é§åãããåçãªã¢ãã¡ãŒã·ã§ã³ãäœæã§ãã匷åãªæ©èœã§ããããã«ãããæ²¡å ¥æãããèŠèŠçã«é åçãªãŠã§ããµã€ããäœæããããã®å¯èœæ§ãç¡éã«åºãããŸãã
CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ãšã¯ïŒ
CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã¯ãCSSã§ã¢ãã¡ãŒã·ã§ã³ãå¶åŸ¡ããæ°ããæ¹æ³ãå°å ¥ãã仿§ã§ããæéããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ïŒäŸïŒèšå®ãããç§æ°ã§ã¢ãã¡ãŒã·ã§ã³ãããïŒã«äŸåãã代ããã«ãã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã䜿çšãããšãã¢ãã¡ãŒã·ã§ã³ã®é²è¡ç¶æ³ãç¹å®ã®èŠçŽ ãŸãã¯ããã¥ã¡ã³ãå šäœã®ã¹ã¯ããŒã«äœçœ®ã«ãªã³ã¯ãããããšãã§ããŸããããã¯ããŠãŒã¶ãŒãããŒãžãäžäžã«ã¹ã¯ããŒã«ããã«ã€ããŠã¢ãã¡ãŒã·ã§ã³ãé²è¡ãŸãã¯éåçãããããšãæå³ãããŠãŒã¶ãŒå ¥åãšèŠèŠçåºåã®éã«çŽæ¥çã§çŽæçãªã€ãªãããçã¿åºããŸãã
æ¬è³ªçã«ãã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã¯ã¹ã¯ããŒã«ããŒãã¢ãã¡ãŒã·ã§ã³ã®ã³ã³ãããŒã©ãŒã«å€ããŸããèŠçŽ ããã¥ãŒããŒãã«å ¥ããšãã§ãŒãã€ã³ããããã»ã¯ã·ã§ã³ãã¹ã¯ããŒã«ããã«ã€ããŠããã°ã¬ã¹ããŒãæºãããããããŠãŒã¶ãŒãããŒãžãäžã«ç§»åããã«ã€ããŠã·ãŒã³å šäœãå±éããããããã®ãæ³åããŠã¿ãŠãã ãããå¯èœæ§ã¯éåžžã«å€§ããããã®çµæãããè±ãã§é åçãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãçãŸããŸãã
äž»èŠãªæŠå¿µãšçšèª
å®è£ ã«å ¥ãåã«ãããã€ãã®éèŠãªçšèªãå®çŸ©ããŸãããïŒ
- ã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ (Scroll Timeline): äž»èŠãªæŠå¿µã§ãããã¢ãã¡ãŒã·ã§ã³ã®é²è¡ç¶æ³ãã¹ã¯ããŒã«äœçœ®ã«ãªã³ã¯ãããã¡ã«ããºã ã§ãã
- ã¹ã¯ããŒã«ããã°ã¬ã¹ (Scroll Progress): å®çŸ©ãããã¹ã¯ããŒã«å¯èœé åå ã§ã®ã¹ã¯ããŒã«ããŒã®çŸåšäœçœ®ã衚ããŸããéåžžã0ïŒé åã®å é ïŒãã1ïŒé åã®æ«å°ŸïŒã®éã®å€ã§ãã
- ã¢ãã¡ãŒã·ã§ã³ã¿ã€ã ã©ã€ã³ (Animation Timeline): ã¢ãã¡ãŒã·ã§ã³ã®é²è¡ãå®çŸ©ããæœè±¡çãªã¿ã€ã ã©ã€ã³ã§ããCSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã䜿çšãããšãããã©ã«ãã®æéããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ã¿ã€ã ã©ã€ã³ãã¹ã¯ããŒã«ããŒã¹ã®ãã®ã«çœ®ãæããããšãã§ããŸãã
- `scroll-timeline-source`:** ãã®CSSããããã£ã¯ãã¢ãã¡ãŒã·ã§ã³ãé§åããã¹ã¯ããŒã«äœçœ®ãæã€èŠçŽ ãæå®ããŸãã`none`ïŒããã©ã«ããæéããŒã¹ã®ã¿ã€ã ã©ã€ã³ã䜿çšïŒã`auto`ïŒãã©ãŠã¶ãé©åãªã¹ã¯ããŒã©ãŒãéžæïŒããŸãã¯IDã䜿çšããç¹å®ã®èŠçŽ ïŒäŸïŒ`#my-scrolling-container`ïŒã«èšå®ã§ããŸãã
- `scroll-timeline-axis`:** ãã®ããããã£ã¯ãã¹ã¯ããŒã«ã®é²è¡ç¶æ³ã远跡ãã軞ãå®çŸ©ããŸãã`block`ïŒåçŽã¹ã¯ããŒã«ïŒã`inline`ïŒæ°Žå¹³ã¹ã¯ããŒã«ïŒã`both`ïŒäž¡æ¹ã®è»žïŒã«èšå®ã§ããŸãã
- `animation-timeline`:** ãã®ããããã£ã¯ãã¢ãã¡ãŒã·ã§ã³ãååä»ãã®ã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã«é¢é£ä»ããŸããã¢ãã¡ãŒã·ã§ã³ã§åç §ããããã«ã¯ã`scroll-timeline-name`ã®ãããªããããã£ã`animation-timeline: view()`ã䜿çšããŠã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ãäœæããååãä»ããå¿ èŠããããŸãã
- `view-timeline` (ãã¥ãŒããŒãäžã®`scroll-timeline`ãš`scroll-timeline-axis`ã®ã·ã§ãŒããã³ã):** ãã¥ãŒããŒãã®ã¹ã¯ããŒã«é²è¡ç¶æ³ãã¢ãã¡ãŒã·ã§ã³ã¿ã€ã ã©ã€ã³ãšããŠäœ¿çšããå Žåã«äœ¿çšãããŸãã`view()`ã`view(inline)`ãŸãã¯`view(block)`ã䜿çšããŠã¹ã¯ããŒã«è»žãæå®ã§ããŸããååä»ãã¿ã€ã ã©ã€ã³ã䜿çšå¯èœã§ãã
CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã®å®è£ ïŒã¹ããããã€ã¹ãããã¬ã€ã
èŠçŽ ããã¥ãŒã«ã¹ã¯ããŒã«ããŠå ¥ã£ãŠãããšãã§ãŒãã€ã³ããç°¡åãªã¢ãã¡ãŒã·ã§ã³ãäœæãããå®è·µçãªäŸãèŠãŠãããŸãããã
äŸïŒã¹ã¯ããŒã«æã®ãã§ãŒãã€ã³
ãã®äŸã§ã¯ãèŠçŽ ããã¥ãŒããŒãã«ã¹ã¯ããŒã«ããŠå ¥ã£ãŠãããšãã§ãŒãã€ã³ããããã«ããŸããããã¯ãã³ã³ãã³ããåŸã ã«è¡šç€ºããããšã§ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããäžè¬çãªãšãã§ã¯ãã§ãã
HTML:
Fade In Element
This element will fade in as you scroll down the page.
CSS:
.scroll-item {
opacity: 0; /* Initially hidden */
animation: fade-in 1s linear forwards;
animation-timeline: view(); /* Uses the viewport scroll as the timeline */
animation-range: entry 25% cover 75%;
}
@keyframes fade-in {
from { opacity: 0; }
to { opacity: 1; }
}
.container {
height: 200vh; /* Make the container taller than the viewport for scrolling */
}
解説:
- `opacity: 0;`:** æåã«`scroll-item`ã`opacity`ã0ã«èšå®ããŠé衚瀺ã«ããŸãã
- `animation: fade-in 1s linear forwards;`:** `fade-in`ãšããååã®æšæºçãªCSSã¢ãã¡ãŒã·ã§ã³ãå®çŸ©ããŸããããã¯1ç§ã§å®äºããç·åœ¢ã®ã¿ã€ãã³ã°é¢æ°ãæã¡ãæçµç¶æ ã§åæ¢ããŸãïŒ`forwards`ïŒã
- `animation-timeline: view();`:** ãããéèŠãªéšåã§ãããã©ãŠã¶ã«ãã¥ãŒããŒãã®ã¹ã¯ããŒã«é²è¡ç¶æ³ãã¢ãã¡ãŒã·ã§ã³ã¿ã€ã ã©ã€ã³ãšããŠäœ¿çšããããã«æç€ºããŸããããã«ããããfade-inãã¢ãã¡ãŒã·ã§ã³ãæšæºã®æèšã§ã¯ãªãã¹ã¯ããŒã«ããŒã«çµã³ä»ããããŸããèŠçŽ ããã©ãŠã¶ã®ãã¥ãŒããŒãã«è¡šç€ºããããšã¢ãã¡ãŒã·ã§ã³ãå®è¡ãããŸãã
- `animation-range: entry 25% cover 75%;`:** ãã®è¡ã¯ãã¢ãã¡ãŒã·ã§ã³ãã«ããŒãã¹ããã¥ãŒããŒãå ã§ã®èŠçŽ ã®å¯èŠæ§ã®ç¯å²ãæå®ããŸãã`entry 25%`ã¯ãèŠçŽ ã®äžéšããã¥ãŒããŒãã®é«ãã®25%ã®äœçœ®ã§ãã¥ãŒããŒãã«å ¥ã£ããšãã«ã¢ãã¡ãŒã·ã§ã³ãéå§ãããããšãæå³ããŸãã`cover 75%`ã¯ãèŠçŽ ã®äžéšããã¥ãŒããŒãã®é«ãã®75%ãã«ããŒãããšãã«ã¢ãã¡ãŒã·ã§ã³ãå®äºããããšãæå³ããŸããããã«ãããèŠçŽ ã®å¯èŠæ§ã«å¿ããŠã¢ãã¡ãŒã·ã§ã³ã®éå§ãšçµäºãå¶åŸ¡ã§ããŸãã
- `@keyframes fade-in`:** `opacity`ã0ãã1ã«é·ç§»ãããå®éã®ã¢ãã¡ãŒã·ã§ã³ãå®çŸ©ããŸãã
- `.container { height: 200vh; }`:** ããã«ããããŒãžãã¹ã¯ããŒã«å¯èœã«ãªããã¢ãã¡ãŒã·ã§ã³ãããªã¬ãŒãããããã«ãªããŸãã
äŸïŒååä»ãã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã®äœ¿çš
è€æ°ã®èŠçŽ ã§åãã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã䜿çšãããå Žåãããã¥ãŒããŒãå šäœã§ã¯ãªãç¹å®ã®ã³ã³ããå ã®ã¹ã¯ããŒã«ã远跡ãããå ŽåããããŸãã
HTML:
Item 1
Item 2
Item 3
CSS:
.scroll-container {
width: 300px;
height: 200px;
overflow-y: scroll; /* Enable vertical scrolling */
scroll-timeline-name: myVerticalScroll;
scroll-timeline-axis: block; /* Vertical scroll */
}
.scroll-item {
height: 100px;
margin-bottom: 20px;
background-color: #f0f0f0;
display: flex;
align-items: center;
justify-content: center;
font-size: 16px;
}
.item1 {
animation: slide-in 0.5s linear forwards;
animation-timeline: myVerticalScroll;
}
.item2 {
animation: slide-in 0.5s linear forwards;
animation-timeline: myVerticalScroll;
animation-delay: 0.2s; /* Stagger the animation */
}
.item3 {
animation: slide-in 0.5s linear forwards;
animation-timeline: myVerticalScroll;
animation-delay: 0.4s; /* Stagger the animation */
}
@keyframes slide-in {
from { transform: translateX(-100%); opacity: 0; }
to { transform: translateX(0); opacity: 1; }
}
解説:
- `.scroll-container`:** ãã®èŠçŽ ã¯`overflow-y: scroll;`ã䜿çšããŠã¹ã¯ããŒã«ã³ã³ãããšããŠèšå®ãããŸãã
- `scroll-timeline-name: myVerticalScroll;`:** `myVerticalScroll`ãšããååã®ã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ãäœæããŸãã
- `scroll-timeline-axis: block;`:** ã¿ã€ã ã©ã€ã³ãåçŽã¹ã¯ããŒã«äœçœ®ã远跡ããããšãæå®ããŸãã
- `.scroll-item`:** åã¢ã€ãã ã¯`animation-timeline: myVerticalScroll;`ã䜿çšããŠããã®ã¢ãã¡ãŒã·ã§ã³ãååä»ãã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã«ãªã³ã¯ããŸãã
- ãããã¢ãã¡ãŒã·ã§ã³:** `animation-delay`ã䜿çšããŠããã广ïŒã¹ã¿ãã¬ãŒããšãã§ã¯ãïŒãäœæãããŠãŒã¶ãŒãã¹ã¯ããŒã«ããã«ã€ããŠåã¢ã€ãã ãé çªã«ã¢ãã¡ãŒã·ã§ã³ããããã«ããŸãã
- `@keyframes slide-in`:** èŠçŽ ãå·Šããã¹ã©ã€ãã€ã³ãããã¢ãã¡ãŒã·ã§ã³ãå®çŸ©ããŸãã
é«åºŠãªãã¯ããã¯ãšäœ¿çšäŸ
CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã¯ãåçŽãªãã§ãŒãã€ã³å¹æã ãã§ã¯ãããŸãããããŸããŸãªæŽç·Žãããã¢ãã¡ãŒã·ã§ã³ãã€ã³ã¿ã©ã¯ãã£ããªäœéšãäœæããããã«äœ¿çšã§ããŸãã以äžã«ããã€ãã®é«åºŠãªãã¯ããã¯ãšäœ¿çšäŸã瀺ããŸãïŒ
1. ãã©ã©ãã¯ã¹ã¹ã¯ããŒã«
ãã©ã©ãã¯ã¹ã¹ã¯ããŒã«ã¯ããŠãŒã¶ãŒãã¹ã¯ããŒã«ããã«ã€ããŠãŠã§ãããŒãžã®ç°ãªãã¬ã€ã€ãŒãç°ãªãé床ã§åããã奥è¡ããšæ²¡å ¥æãçã¿åºãææ³ã§ããã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã䜿çšãããšãJavaScriptã«å€§ããäŸåããããšãªãããã©ã©ãã¯ã¹å¹æãã¯ããã«ç°¡åã«å®è£ ã§ããŸãã
ã³ã³ã»ãã: ç°ãªãèŠçŽ ãã¹ã¯ããŒã«ã®é²è¡ç¶æ³ã«åºã¥ããŠç°ãªãã¢ãã¡ãŒã·ã§ã³ç¯å²ãšå€åœ¢ãæã¡ãŸãã
äŸ: èæ¯ç»åã忝ã®ã³ã³ãã³ããããé ãåãããšã§ããã©ã©ãã¯ã¹å¹æãçãŸããŸãã
2. åçãªæåãæã€ã¹ãã£ãããŒèŠçŽ
ã¹ãã£ãããŒããžã·ã§ãã³ã°ãšã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ãçµã¿åãããããšã§ããã¥ãŒããŒãã®äžéšã«åºå®ããã€ã€ãã¹ã¯ããŒã«ã®é²è¡ç¶æ³ã«åºã¥ããŠã¢ãã¡ãŒã·ã§ã³ããèŠçŽ ãäœæã§ããŸããããšãã°ããŠãŒã¶ãŒãäžã«ã¹ã¯ããŒã«ããã«ã€ããŠããã²ãŒã·ã§ã³ããŒãçž®å°ããããå€èгãå€ãã£ããããããšãèããããŸãã
ã³ã³ã»ãã: `position: sticky`ãã¹ã¯ããŒã«é§åã¢ãã¡ãŒã·ã§ã³ãšäœµçšããŠããŠãŒã¶ãŒãã¹ã¯ããŒã«ããã«ã€ããŠèŠçŽ ã®ããããã£ã倿ŽããŸãã
3. ããã°ã¬ã¹ã€ã³ãžã±ãŒã¿ãŒ
ãŠãŒã¶ãŒãããŒãžãã»ã¯ã·ã§ã³ãã©ãã ãã¹ã¯ããŒã«ãããã瀺ãããã°ã¬ã¹ããŒããã®ä»ã®èŠèŠçãªã€ã³ãžã±ãŒã¿ãŒãäœæããŸããããã«ããã貎éãªãã£ãŒãããã¯ãæäŸããããŠãŒã¶ãŒãã³ã³ãã³ãå ã®èªåã®äœçœ®ãçè§£ããã®ã«åœ¹ç«ã¡ãŸãã
ã³ã³ã»ãã: ã¢ãã¡ãŒã·ã§ã³ã®`width`ã`height`ãã¹ã¯ããŒã«ã®é²è¡ç¶æ³ã«ãã£ãŠé§åãããé²èЧãããã³ã³ãã³ãã®éãèŠèŠçã«è¡šçŸããŸãã
4. è€éãªã·ãŒã³é·ç§»
ã¹ã¯ããŒã«äœçœ®ã«åºã¥ããŠããŠã§ãããŒãžã®ã·ãŒã³å šäœãã»ã¯ã·ã§ã³ãã¢ãã¡ãŒã·ã§ã³åããŸããããã¯ããŠãŒã¶ãŒã®ã¹ã¯ããŒã«ãç©èªãå±éãããã€ã³ã¿ã©ã¯ãã£ããªã¹ããŒãªãŒããã©ãã£ããäœæããããã«äœ¿çšã§ããŸãã
ã³ã³ã»ãã: è€æ°ã®èŠçŽ ãå調ããã·ãŒã±ã³ã¹ã§ã¢ãã¡ãŒã·ã§ã³ããè€éã§é åçãªèŠèŠçã¹ããŒãªãŒãäœãåºããŸãã
5. ã¢ãã¡ãŒã·ã§ã³åããããã£ãŒããšããŒã¿å¯èŠå
ã¹ã¯ããŒã«ã®é²è¡ç¶æ³ã«åºã¥ããŠãã£ãŒããããŒã¿å¯èŠåãã¢ãã¡ãŒã·ã§ã³åããããšã§ãããããçãçããšãããŸããããã«ãããè€éãªããŒã¿ãããé åçã§çè§£ãããããªããŸãã
ã³ã³ã»ãã: ãŠãŒã¶ãŒãããŒã¿ã»ã¯ã·ã§ã³ãã¹ã¯ããŒã«ããã«ã€ããŠãããŒã¿ãã€ã³ãããã£ãŒãèŠçŽ ããã¥ãŒã«ã¢ãã¡ãŒã·ã§ã³ã§è¡šç€ºãããããå€èгãå€ãã£ããããŸãã
CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã䜿çšããå©ç¹
Webéçºãããžã§ã¯ãã§CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ãæ¡çšãã compelling ãªçç±ã¯ããã€ããããŸãïŒ
- ããã©ãŒãã³ã¹ã®åäž: ã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã¢ãã¡ãŒã·ã§ã³ã¯ããã©ãŠã¶ã®ã¬ã³ããªã³ã°ãšã³ãžã³ã«ãã£ãŠçŽæ¥åŠçããããããéåžžãJavaScriptããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ãããããã©ãŒãã³ã¹ãé«ããªããŸããããã«ãããããã¹ã ãŒãºãªã¹ã¯ããŒã«ãšå šäœçã«ããè¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå®çŸã§ããŸãã
- JavaScriptãžã®äŸå床ã®äœæž: CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã䜿çšããããšã§ãã¢ãã¡ãŒã·ã§ã³ã«å¯ŸããJavaScriptãžã®äŸåãå€§å¹ ã«æžããããšãã§ããã³ãŒããããã¯ãªãŒã³ã§ä¿å®ããããããšã©ãŒãçºçãã«ãããªããŸãã
- 宣èšçãªæ§æ: CSSã¯ã¢ãã¡ãŒã·ã§ã³ãå®çŸ©ããããã®å®£èšçãªæ¹æ³ãæäŸãããããã¢ãã¡ãŒã·ã§ã³ã®ããžãã¯ãçè§£ãã倿Žããã®ã容æã«ãªããŸãã
- ã¢ã¯ã»ã·ããªãã£: æ£ããå®è£ ãããCSSã¢ãã¡ãŒã·ã§ã³ã¯ãæ¯æŽæè¡ãšã®å¹²æžãå°ãªããããJavaScriptããŒã¹ã®ã¢ãã¡ãŒã·ã§ã³ãããã¢ã¯ã»ã·ãã«ã«ãªãå¯èœæ§ããããŸãã
- ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®åäž: ã¹ã¯ããŒã«é§åã¢ãã¡ãŒã·ã§ã³ã¯ãããé åçã§ã€ã³ã¿ã©ã¯ãã£ããªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãçã¿åºãããŠãŒã¶ãŒæºè¶³åºŠã®åäžãšãŠã§ããµã€ãã§ã®æ»åšæéã®å»¶é·ã«ã€ãªãããŸãã
èæ ®äºé ãšãã¹ããã©ã¯ãã£ã¹
CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã«ã¯å€ãã®å©ç¹ããããŸãããçæãã¹ãèæ ®äºé ããã¹ããã©ã¯ãã£ã¹ãããã€ããããŸãïŒ
- ãã©ãŠã¶äºææ§: æ¯èŒçæ°ããæè¡ã§ãããããCSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã¯ãã¹ãŠã®ãã©ãŠã¶ãç¹ã«å€ãããŒãžã§ã³ã§ã¯å®å šã«ã¯ãµããŒããããŠããªãå ŽåããããŸããCanIUse.comãªã©ã®ãµã€ãã§çŸåšã®ãµããŒãç¶æ³ã確èªããå€ããã©ãŠã¶åãã«ã¯JavaScriptã䜿çšãããã©ãŒã«ããã¯ãæäŸããŠãã ããã
- ããã©ãŒãã³ã¹ã®æé©å: äžè¬çã«JavaScriptã¢ãã¡ãŒã·ã§ã³ãããããã©ãŒãã³ã¹ã¯é«ãã§ãããæé©åãããŠããªãã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã¢ãã¡ãŒã·ã§ã³ã¯ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸããã¬ã€ã¢ãŠããããªã¬ãŒããããããã£ïŒäŸïŒ`width`ã`height`ïŒã®ã¢ãã¡ãŒã·ã§ã³åãé¿ãã代ããã«`transform`ã`opacity`ã䜿çšãããªã©ã®ãã¯ããã¯ã掻çšããŠãã ããã
- ã¢ã¯ã»ã·ããªãã£: ã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã¢ãã¡ãŒã·ã§ã³ããé害ãæã€ãŠãŒã¶ãŒãå«ããã¹ãŠã®ãŠãŒã¶ãŒã«ãšã£ãŠã¢ã¯ã»ã·ãã«ã§ããããšã確èªããŠãã ãããæ³šæãæ£æŒ«ã«ããããã¢ãã¡ãŒã·ã§ã³ãããŠãŒã¶ãŒã®ããŒãžããã²ãŒã·ã§ã³ã劚ãããããªã¢ãã¡ãŒã·ã§ã³ã¯é¿ããŠãã ãããã¢ãã¡ãŒã·ã§ã³ãèŠãããªããŠãŒã¶ãŒåãã«ä»£æ¿ææ®µãæäŸãã`prefers-reduced-motion`ã¡ãã£ã¢ã¯ãšãªã䜿çšããŠã¢ãã¡ãŒã·ã§ã³ãç¡å¹ã«ããŠãã ããã
- ããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ã: CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ãããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ããšããŠäœ¿çšããŠãã ãããããã¯ããã©ãŠã¶ãã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ããµããŒãããŠããªããŠãããŠã§ããµã€ãã®ã³ã¢æ©èœãåäœããããã«ããããšãæå³ããŸãã
- éå°ãªã¢ãã¡ãŒã·ã§ã³: ã¢ãã¡ãŒã·ã§ã³ã䜿ããããªãã§ãã ãããå·§åŠã§ç®çã®ããã¢ãã¡ãŒã·ã§ã³ã¯ãç¡é§ãªãã®ãããã¯ããã«å¹æçã§ããã¢ãã¡ãŒã·ã§ã³ãUXãåäžããããã®ã§ãããæ³šæãããããã®ã§ãªãããšã確èªããŠãã ããã
å®éã®äœ¿çšäŸ
CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããã«ã©ã®ããã«äœ¿çšã§ããããããã€ãã®å®éã®äŸã以äžã«ç€ºããŸãïŒ
- Eã³ããŒã¹ã®è£œåããŒãž: ãŠãŒã¶ãŒãããŒãžãäžã«ã¹ã¯ããŒã«ããã«ã€ããŠã補åã®æ©èœã匷調ãããã補åã®ç°ãªããã¥ãŒã玹ä»ããããã«ã¹ã¯ããŒã«é§åã¢ãã¡ãŒã·ã§ã³ã䜿çšããŸãã
- ããŒããã©ãªãªãµã€ã: ãŠãŒã¶ãŒã®ã¹ã¯ããŒã«ã«ãã£ãŠç°ãªããããžã§ã¯ããå®çžŸã衚瀺ãããã€ã³ã¿ã©ã¯ãã£ããªããŒããã©ãªãªãµã€ããäœæããŸãã
- ãã¥ãŒã¹èšäº: ãŠãŒã¶ãŒããã¥ãŒã¹èšäºãã¹ã¯ããŒã«ããã«ã€ããŠãã£ãŒããã°ã©ãããŸãã¯ç»åãã¢ãã¡ãŒã·ã§ã³åããã³ã³ãã³ããããé åçã§çè§£ããããããŸãã
- ã©ã³ãã£ã³ã°ããŒãž: ã¹ã¯ããŒã«é§åã¢ãã¡ãŒã·ã§ã³ã䜿çšããŠããŠãŒã¶ãŒãã©ã³ãã£ã³ã°ããŒãžã®äžã«èªå°ããäž»èŠãªæ©èœãè¡ååèµ·ã匷調ããŸãã
ã°ããŒãã«ãªèæ ®äºé :
ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã«ã¹ã¯ããŒã«é§åã¢ãã¡ãŒã·ã§ã³ãèšèšããéã«ã¯ãã¹ã¯ããŒã«è¡åã«ãããæåçãªéããèæ ®ããããšãéèŠã§ããããšãã°ãäžéšã®æåã®ãŠãŒã¶ãŒã¯åçŽã¹ã¯ããŒã«ã«æ £ããŠãããããããŸããããä»ã®æåã®ãŠãŒã¶ãŒã¯æ°Žå¹³ã¹ã¯ããŒã«ã«æ £ããŠããå ŽåããããŸããã¹ã¯ããŒã«ã䜿çšããããªããŠãŒã¶ãŒã®ããã«ã代æ¿ã®ããã²ãŒã·ã§ã³ãªãã·ã§ã³ãæäŸããããšãæ€èšããŠãã ããã
ãŸããã€ã³ã¿ãŒãããæ¥ç¶ãé ãããã€ã¹ã§ã®æœåšçãªããã©ãŒãã³ã¹ã®åé¡ã«ã泚æããŠãã ãããã¢ãã¡ãŒã·ã§ã³ãè¿ éã«èªã¿èŸŒãŸãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«æªåœ±é¿ãäžããªãããã«æé©åããŠãã ãããããšãã°ãç»åã广çã«å§çž®ããé©åãªã¡ãã£ã¢ã¯ãšãªã䜿çšããŸãã
代æ¿ã¢ãããŒã
CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã¯ãã¹ã¯ããŒã«é§åã¢ãã¡ãŒã·ã§ã³ãäœæããããã®åŒ·åã§ããã©ãŒãã³ã¹ã®é«ãæ¹æ³ãæäŸããŸãããèæ ®ãã¹ã代æ¿ã¢ãããŒãããããŸãïŒ
- JavaScriptã©ã€ãã©ãª (äŸïŒScrollMagic, GreenSock): JavaScriptã©ã€ãã©ãªã¯ãããæçããåºããµããŒããããŠããä»£æ¿ææ®µãæäŸããŸãããéåžžãCSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ãšæ¯èŒããŠããã©ãŒãã³ã¹ã®ãªãŒããŒãããã䌎ããŸãããããããã©ãŠã¶ã®ãµããŒããåªããŠãããããå€ãã®ãµããŒããå©çšã§ããå€§èŠæš¡ãªã³ãã¥ããã£ããããŸãã
- Intersection Observer API: Intersection Observer APIã䜿çšãããšãèŠçŽ ããã¥ãŒããŒãã«åºå ¥ãããã¿ã€ãã³ã°ãæ€åºã§ããããã䜿çšããŠã¢ãã¡ãŒã·ã§ã³ããã®ä»ã®ã¢ã¯ã·ã§ã³ãããªã¬ãŒã§ããŸããåçŽãªã¹ã¯ããŒã«ããªã¬ãŒå¹æã«ã¯è¯ãéžæè¢ã§ãããè€éãªã¢ãã¡ãŒã·ã§ã³ã«ã¯CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã»ã©åŒ·åã§ãæè»ã§ããããŸããã
ã©ã®ã¢ãããŒããéžæãããã¯ããããžã§ã¯ãã®ç¹å®ã®èŠä»¶ãæãŸãããã©ãŠã¶äºææ§ã®ã¬ãã«ãããã³ããã©ãŒãã³ã¹ã®èæ ®äºé ã«ãã£ãŠç°ãªããŸãã
çµè«
CSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã¯ããŠã§ãéçºè ãåçã§ãé åçã§ãããã©ãŒãã³ã¹ã®é«ãã¹ã¯ããŒã«é§åã¢ãã¡ãŒã·ã§ã³ãäœæã§ããããã«ããç»æçãªæè¡ã§ããã¢ãã¡ãŒã·ã§ã³ããŠãŒã¶ãŒã®ã¹ã¯ããŒã«é²è¡ç¶æ³ã«çŽæ¥ãªã³ã¯ããããšã§ãããçŽæçã§æ²¡å ¥æã®ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãäœãåºãããšãã§ããŸãããŸã æ¯èŒçæ°ããæè¡ã§ãããCSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã¯ãŠã§ãã¢ãã¡ãŒã·ã§ã³ã«é©åœãããããããŠã§ãäžã§ã®æ°ããã¬ãã«ã®ã€ã³ã¿ã©ã¯ãã£ããã£ãè§£ãæŸã€å¯èœæ§ãç§ããŠããŸãã
ãã®æè¡ãåãå ¥ããããŸããŸãªå¹æã詊ãããŠã§ãã¢ãã¡ãŒã·ã§ã³ã§å¯èœãªããšã®éçãæŒãåºããŠãã ãããããããããšã§ãèŠèŠçã«é åçã§ããã ãã§ãªãããŠãŒã¶ãŒã«ãšã£ãŠçã«é åçã§èšæ¶ã«æ®ãäœéšãæäŸãããŠã§ããµã€ããäœæã§ããŸãããã©ãŠã¶ã®ãµããŒããæ¡å€§ããã³ãã¥ããã£ãããé«åºŠãªãã¯ããã¯ãéçºããã«ã€ããŠãCSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã¯ééããªãçŸä»£ã®ãŠã§ãéçºã«ãšã£ãŠäžå¯æ¬ ãªããŒã«ã«ãªãã§ãããã
次ã®ã¹ããããšããŠãææ°ã®æ å ±ãäŸã«ã€ããŠã¯ãå ¬åŒã®CSS仿§ããã©ãŠã¶ã®ããã¥ã¡ã³ããåç §ããŠãã ãããããã§ç޹ä»ããäŸã詊ããŠãããªãã®äœåãéçºè ã³ãã¥ããã£ãšå ±æããŠãã ãããCSSã¹ã¯ããŒã«ã¿ã€ã ã©ã€ã³ã®ç¶ç¶çãªé²åã«è²¢ç®ãããŠã§ãã¢ãã¡ãŒã·ã§ã³ã®æªæ¥ã圢äœãæå©ããããŠãã ããã